/**
 * \file TesteurChemin.cpp
 * \brief Ce fichier contient les tests unitaires de la classe Labyrinthe
 * \author Pierre-Marc Levasseur, Simon Rodier
 * \date juin 2014
 */

#include<gtest/gtest.h>
#include<iostream>
#include"Labyrinthe.h"

using namespace std;
using namespace TP1;

TEST(Labyrinthe, cheminLabyrinthe10x10)
{
	Labyrinthe lab;

	ifstream entree("FichiersLabyrintheLinux/Lab10x10/Rouge10x10.txt");

	if (!entree)
	{
		cout << "Fichier rouge introuvable.\n";
	}


	lab.chargeLabyrinthe(Rouge, entree);
	//cout << "\nLabyrinthe rouge charge.\n";
	entree.close(); //on ferme le fichier


	entree.open("FichiersLabyrintheLinux/Lab10x10/Vert10x10.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier vert introuvable.\n";
	}

	lab.chargeLabyrinthe(Vert, entree);
	//cout << "\nLabyrinthe vert charge.\n";
	entree.close();

	entree.open("FichiersLabyrintheLinux/Lab10x10/Bleu10x10.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier bleu introuvable.\n";
	}

	lab.chargeLabyrinthe(Bleu, entree);
	//cout << "\nLabyrinthe bleu charge.\n";
	entree.close();

	entree.open("FichiersLabyrintheLinux/Lab10x10/Jaune10x10.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier jaune introuvable.\n\n";
	}

	lab.chargeLabyrinthe(Jaune, entree);
	//cout << "\nLabyrinthe jaune charge.\n";
	entree.close();


	Chemin soluce;

	soluce = lab.cheminLabyrinthe(Rouge);
	cout << endl << "Solution pour la couleur Rouge dans le labyrinthe 10x10 : " << endl;
	soluce.afficheChemin();
	cout << endl;
}

TEST(Labyrinthe, cheminLabyrinthe2x3)
{
	Labyrinthe lab;

	ifstream entree("FichiersLabyrintheLinux/Lab2x3/Rouge.txt");

	if (!entree)
	{
		cout << "Fichier rouge introuvable.\n";
	}


	lab.chargeLabyrinthe(Rouge, entree);
	//cout << "\nLabyrinthe rouge charge.\n";
	entree.close(); //on ferme le fichier


	entree.open("FichiersLabyrintheLinux/Lab2x3/Vert.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier vert introuvable.\n";
	}

	lab.chargeLabyrinthe(Vert, entree);
	//cout << "\nLabyrinthe vert charge.\n";
	entree.close();

	entree.open("FichiersLabyrintheLinux/Lab2x3/Bleu.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier bleu introuvable.\n";
	}

	lab.chargeLabyrinthe(Bleu, entree);
	//cout << "\nLabyrinthe bleu charge.\n";
	entree.close();

	entree.open("FichiersLabyrintheLinux/Lab2x3/Jaune.txt", ios::in);
	if (!entree)
	{
		cout << "Fichier jaune introuvable.\n\n";
	}

	lab.chargeLabyrinthe(Jaune, entree);
	//cout << "\nLabyrinthe jaune charge.\n";
	entree.close();

	Chemin soluce;
	soluce = lab.cheminLabyrinthe(Rouge);
	ASSERT_EQ(3,soluce.tailleChemin());
	soluce = lab.cheminLabyrinthe(Bleu);
	ASSERT_EQ(4, soluce.tailleChemin());
	soluce = lab.cheminLabyrinthe(Jaune);
	ASSERT_EQ(0, soluce.tailleChemin());
	soluce = lab.cheminLabyrinthe(Vert);
	ASSERT_EQ(5, soluce.tailleChemin());
}











